/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package logica;

import fisica.PeriodoAplicacionVacunaFisica;
import hibernate.objeto.PeriodoAplicacionVacuna;
import java.util.Vector;

/**
 *
 * @author Gonzalo
 */
public class PeriodoAplicacionVacunaLogica extends CapaLogica{

    /**
     * Retorna el vector de objetos PeriodoAplicacionVacuna según el nombre de
     * una vacuna dada.
     *
     * @param nombreVacuna El nombre de la vacuna
     * @return El vector de objetos PeriodoAplicacionVacuna consultado, null si
     * no existe
     */
    public static Vector<PeriodoAplicacionVacuna>
            getVectorPeriodoAplicacionVacunaPorNombreVacuna (String nombreVacuna) {
        return PeriodoAplicacionVacunaFisica.
                getVectorPeriodoAplicacionVacunaPorNombreVacuna(
                reemplazarUnApostrofoPorDosApostrofos(nombreVacuna), true);
    }

    public static PeriodoAplicacionVacuna
            getPeriodoAplicacionVacunaPorNombrePeriodoAplicacionYNombreVacuna (
            String nombrePeriodoAplicacion, String nombreVacuna) {
        return PeriodoAplicacionVacunaFisica.
                getPeriodoAplicacionVacunaPorNombrePeriodoAplicacionYNombreVacuna(
                reemplazarUnApostrofoPorDosApostrofos(nombrePeriodoAplicacion),
                reemplazarUnApostrofoPorDosApostrofos(nombreVacuna), true);
    }

    /**
     * Verifica si un período de aplicación corresponde a una vacuna dada.
     *
     * @param nombreVacuna El nombre de la vacuna.
     * @param nombrePeriodo El nombre del período.
     * @return true si corresponde, false en caso contrario
     */
    public static boolean esPeriodoDePublicacion(String nombreVacuna,
            String nombrePeriodo) {
        Vector<PeriodoAplicacionVacuna> periodosSegunVacuna =
                PeriodoAplicacionVacunaFisica
                .getVectorPeriodoAplicacionVacunaPorNombreVacuna(
                reemplazarUnApostrofoPorDosApostrofos(
                nombreVacuna), true);
        if (periodosSegunVacuna != null) {
            for (int i = 0; i < periodosSegunVacuna.size(); i++) {
                if (nombrePeriodo.equalsIgnoreCase(periodosSegunVacuna.get(i)
                        .getDescripcionPeriodoAplicacionVacuna())) {
                    return true;
                }
            }
        }
        return false;
    }

    /**
     * Convierte un vector de períodos de aplicación en un arreglo de los
     * nombres de los períodos de aplicación.
     *
     * @param vectorPeriodosDeAplicacion El vector a convertir
     * @param arregloString La lista resultante vacia
     * @return La lista resultante cargada
     */
    public static String[] vectorAArregloStringPeriodosDeAplicacionVacuna(
            Vector<PeriodoAplicacionVacuna> vectorPeriodosDeAplicacion) {

        if (vectorPeriodosDeAplicacion != null) {
            int tamaño = vectorPeriodosDeAplicacion.size() + 1;
            String[] arregloStringModificado =
                    new String[tamaño];

            String primerElemento = "";

            arregloStringModificado[0] = primerElemento;

            for (int i = 0; i < vectorPeriodosDeAplicacion.size(); i++){
                arregloStringModificado[i+1] = ((PeriodoAplicacionVacuna)
                        vectorPeriodosDeAplicacion.get(i))
                        .getDescripcionPeriodoAplicacionVacuna();
            }
            return arregloStringModificado;
        } else {
            String[] arregloStringModificado =
                    new String[1];

            String primerElemento = "";

            arregloStringModificado[0] = primerElemento;
            return arregloStringModificado;
        }
    }

}
